
export class TEdge {
    //标识。
    public label: number;
    //顶点索引。
    public vertex: number[] = [2];
    //三角形索引。
    public triangle: number[] = [2];
    //构造函数。
    public constructor(label?: number) {
        this.label = (label !== undefined) ? label : -1;
        this.triangle[0] = this.triangle[1] = -1;
        this.vertex[0]   = this.vertex[1]   = -1;
    }

    /**
     * 判断是否相等。
     */
    public equals(edge: TEdge): boolean {
        return (
            (this.vertex[0] == edge.vertex[0] &&
                this.vertex[1] == edge.vertex[1]) ||
            (this.vertex[1] == edge.vertex[0] &&
                this.vertex[0] == edge.vertex[1]));
    }

    /**
     * 替换三角形。
     * 
     * @param told 旧索引。
     * @param tnew 新索引。
     */
    public replaceTriangle(told: number, tnew: number): boolean {
        for (var i = 0; i < 2; i++) {
            if (this.triangle[i] == told) {
                this.triangle[i] = tnew;
                return true;
            }
        }
        return false;
    }

    /**
     * 替换顶点。
     * 
     * @param vold 旧顶点。
     * @param vnew 新顶点。
     */
    public replaceVertex(vold: number, vnew: number): boolean {
        for (var i = 0; i < 2; i++) {
            if (this.vertex[i] == vold) {
                this.vertex[i] = vnew;
                return true;
            }
        }
        return false;
    }
}